package com.alili_tv.system.service;

import com.alili_tv.system.entity.Comment;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 评论表 服务类
 * </p>
 *
 * @author baomidou
 * @since 2023-03-17
 */
public interface CommentService extends IService<Comment> {

    /**
     * 获取视频的评论信息，每个一级评论包含一个点赞数最多的子评论
     * @param videoId
     * @param pageIndex
     * @param pageSize
     * @param isHot
     * @return
     */
    List<Comment> getByVideoId(long videoId, int pageIndex, int pageSize, boolean isHot);

    /**
     * 获取视频的评论总数
     * (为什么不使用mybatisplus的page自带的查询总数?
     * 因业务需求, 先查询根评论, 再查询了根评论下的子评论,
     * 这样获取到的total是根评论总数, 而不是所有评论数)
     * @param videoId
     * @return
     */
    long getCountByVideoId(long videoId);

    /**
     * 获取子评论总数
     * @param parentId 根评论id
     * @return
     */
    long getCountByParentId(long parentId);

    /**
     * 获取所有子评论, 时间正序
     * @param parentId 根评论id
     * @return
     */
    List<Comment> getByParentId(Long parentId);

    /**
     * 判断当前用户是否点赞
     * @return
     */
    boolean isLike(Long commentId);


    List<Comment> getByIds(Collection<Long> ids);
}
